/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import controladores.ConvenioXPeriodoXEstudianteFacadeLocal;
import entidades.DetalleSeguimientoMensual;
import entidades.Estudiante;
import entidades.SeguimientoInformeMensual;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpServletRequest;
import negocio.DetalleSeguimientoMensualInterface;
import negocio.EstudianteInterface;
import negocio.SeguimientoInformeMensualInterface;
import org.primefaces.component.datatable.DataTable;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class FSeguimInformeMensual implements Formato, Serializable {

    private SeguimientoInformeMensual seguimientoInformeMensual = new SeguimientoInformeMensual();
    @EJB
    private SeguimientoInformeMensualInterface seguimientoInformeMensualInterface;
    private String estudianteSelected;
    @EJB
    private ConvenioXPeriodoXEstudianteFacadeLocal convenioXPeriodoXEstudianteFacadeLocal;
    @EJB
    private DetalleSeguimientoMensualInterface detalleSeguimientoMensualInterface;
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    private Estudiante estudiante = new Estudiante();
    private String seguimientosMensuales;
    private List<DetalleSeguimientoMensual> listaDetalleSeguimientoMensual;
    private DetalleSeguimientoMensual detalleSeguimientoMensualSelected;
    private DataTable htmlDataTableSeguimientosMensuales;
    private int index;
    private Date fechaIni;
    private Date fechaFin;
    private String hito;
    private String descripcion;
    private String observaciones;
    private String ESTADO_PERIODO = "ACT";
    private boolean renderedBotonGuardar;
    private boolean renderedBotonEditar;
    private boolean renderedBotonImprimir;

    public FSeguimInformeMensual() {
    }

    @PostConstruct
    public void inicializarVariables() {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        if (request.getParameter("accionSeguimientoInformeMensual") != null) {
            String accion = (String) request.getParameter("accionSeguimientoInformeMensual");
            if (accion.equals("Consultar")) {
                if (request.getParameter("seguimientoInformeMensual") != null) {
                    seguimientoInformeMensual = seguimientoInformeMensualInterface.consultarSeguimientoInformeMensual(Integer.parseInt(request.getParameter("seguimientoInformeMensual").toString()));
                    estudiante = seguimientoInformeMensual.getConvenioXPeriodoXEstudiante().getEstudiante();
                    listaDetalleSeguimientoMensual = seguimientoInformeMensual.getDetalleSeguimientoMensualList();
                    renderedBotonGuardar = false;
                    renderedBotonEditar = false;
                    renderedBotonImprimir = true;
                }
            } else {
                if (accion.equals("Editar")) {
                    if (request.getParameter("seguimientoInformeMensual") != null) {
                    
                }
                } else {
                    if (accion.equals("Nuevo")) {
                        listaDetalleSeguimientoMensual = new ArrayList<DetalleSeguimientoMensual>();
                        estudiante = new Estudiante();
                        estudiante = sessionBean.getUsuarioSession().getEstudiante();
                        renderedBotonGuardar = true;
                        renderedBotonEditar = false;
                        renderedBotonImprimir = false;
                    }
                }
            }
        }
    }

    @Override
    public void ConsultarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.        
    }

    @Override
    public void DiligenciarFormato() {
        System.out.println("ingresa al metodo de guardado---------------------------------");
        try {
            seguimientoInformeMensual.setConvenioXPeriodoXEstudiante(convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudiante.getIdEstudiante(), ESTADO_PERIODO));
            seguimientoInformeMensual.setIdSeguimientoMensual(seguimientoInformeMensualInterface.obtenerMaxId());
            for (DetalleSeguimientoMensual dsm : listaDetalleSeguimientoMensual) {
                dsm.setIdDetalleSeguimientoMensual(detalleSeguimientoMensualInterface.obtenerMaxId() + listaDetalleSeguimientoMensual.indexOf(dsm));
                dsm.setIdSeguimientoMensual(seguimientoInformeMensual);
            }
            seguimientoInformeMensual.setDetalleSeguimientoMensualList(listaDetalleSeguimientoMensual);
            seguimientoInformeMensualInterface.crear(seguimientoInformeMensual);
            FacesMessage facesMessage = new FacesMessage("Datos guardados con éxito");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            limpiarCampos();
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }

    @Override
    public void AprobarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void EditarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    private void limpiarCampos() {
        seguimientoInformeMensual = null;
        listaDetalleSeguimientoMensual = null;
        fechaIni = null;
        fechaFin = null;
        hito = "";
        descripcion = "";
        observaciones = "";
    }

    public void cargarSeguimientosMensuales(ActionEvent actionEvent) {
        DetalleSeguimientoMensual detalleSeguimientoMensual = new DetalleSeguimientoMensual(listaDetalleSeguimientoMensual.size(), fechaIni, fechaFin, hito, descripcion, observaciones);
        listaDetalleSeguimientoMensual.add(detalleSeguimientoMensual);
        fechaIni = null;
        fechaFin = null;
        hito = "";
        descripcion = "";
        observaciones = "";
    }

    public void quitarSeguimientosMensuales(ActionEvent actionEvent) {
        for (int i = 0; i < listaDetalleSeguimientoMensual.size(); i++) {
            if (index == listaDetalleSeguimientoMensual.get(i).getIdDetalleSeguimientoMensual()) {
                listaDetalleSeguimientoMensual.remove(i);
                index = 0;
            }

        }
    }

    public void cargarIndice(ActionEvent actionEvent) {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        index = Integer.parseInt(request.getParameter("param"));
    }

    public SeguimientoInformeMensual getSeguimientoInformeMensual() {
        return seguimientoInformeMensual;
    }

    public void setSeguimientoInformeMensual(SeguimientoInformeMensual seguimientoInformeMensual) {
        this.seguimientoInformeMensual = seguimientoInformeMensual;
    }

    public String getEstudianteSelected() {
        return estudianteSelected;
    }

    public void setEstudianteSelected(String estudianteSelected) {
        this.estudianteSelected = estudianteSelected;
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public String getSeguimientosMensuales() {
        return seguimientosMensuales;
    }

    public void setSeguimientosMensuales(String seguimientosMensuales) {
        this.seguimientosMensuales = seguimientosMensuales;
    }

    public List<DetalleSeguimientoMensual> getListaDetalleSeguimientoMensual() {
        return listaDetalleSeguimientoMensual;
    }

    public void setListaDetalleSeguimientoMensual(List<DetalleSeguimientoMensual> listaDetalleSeguimientoMensual) {
        this.listaDetalleSeguimientoMensual = listaDetalleSeguimientoMensual;
    }

    public DetalleSeguimientoMensual getDetalleSeguimientoMensualSelected() {
        return detalleSeguimientoMensualSelected;
    }

    public void setDetalleSeguimientoMensualSelected(DetalleSeguimientoMensual detalleSeguimientoMensualSelected) {
        this.detalleSeguimientoMensualSelected = detalleSeguimientoMensualSelected;
    }

    public DataTable getHtmlDataTableSeguimientosMensuales() {
        return htmlDataTableSeguimientosMensuales;
    }

    public void setHtmlDataTableSeguimientosMensuales(DataTable htmlDataTableSeguimientosMensuales) {
        this.htmlDataTableSeguimientosMensuales = htmlDataTableSeguimientosMensuales;
    }

    public Date getFechaIni() {
        return fechaIni;
    }

    public void setFechaIni(Date fechaIni) {
        this.fechaIni = fechaIni;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public String getHito() {
        return hito;
    }

    public void setHito(String hito) {
        this.hito = hito;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public Estudiante getEstudiante() {
        return estudiante;
    }

    public void setEstudiante(Estudiante estudiante) {
        this.estudiante = estudiante;
    }

    public boolean isRenderedBotonGuardar() {
        return renderedBotonGuardar;
    }

    public void setRenderedBotonGuardar(boolean renderedBotonGuardar) {
        this.renderedBotonGuardar = renderedBotonGuardar;
    }

    public boolean isRenderedBotonEditar() {
        return renderedBotonEditar;
    }

    public void setRenderedBotonEditar(boolean renderedBotonEditar) {
        this.renderedBotonEditar = renderedBotonEditar;
    }

    public boolean isRenderedBotonImprimir() {
        return renderedBotonImprimir;
    }

    public void setRenderedBotonImprimir(boolean renderedBotonImprimir) {
        this.renderedBotonImprimir = renderedBotonImprimir;
    }   
    
}
